package qjc.g_链表;

import com.链表.练习题.ListNode;

public class g2_反转链表 {
    /**
     * 定义一个辅助函数，用于递归反转链表，
     * 如果当前节点为空，说明已经到达链表末尾，返回新的头节点，
     * 保存当前节点的下一个节点，将当前节点的下一个节点指向新的头节点，
     * 递归调用，反转下一个节点，同时更新新的头节点
     */
    public ListNode reverseList(ListNode head) {
        return reverseListHelper(head, null);
    }

    private ListNode reverseListHelper(ListNode current, ListNode newHead) {
        if (current == null) {
            return newHead;
        }
        ListNode next = current.next;
        current.next = newHead;
        return reverseListHelper(next, current);
    }
}
